package br.gov.mi.corporativo.dominio.rhmi;

// Generated 17/11/2014 09:46:12 by Hibernate Tools 4.0.0

import java.util.Date;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Immutable;

/**
 * FuncionarioCargo generated by hbm2java
 */
@Entity @Immutable
@Table(schema = "DES_RHMI", name = "FUNCIONARIO_CARGO")
public final class FuncionarioCargo implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3277873414008315994L;
	
	@Id
	@Column(name = "ID_FUNCIONARIO_CARGO", unique = true, nullable = false, precision = 22, scale = 0)
	private Long idFuncionarioCargo;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_FUNCIONARIO", nullable = false)
	private Funcionario funcionarioByIdFuncionario;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_FUNCIONARIO_CHEFE_IMEDIATO")
	private Funcionario funcionarioChefeImediato;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_SITUACAO_FUNCIONAL")
	private SituacaoFuncional situacaoFuncional;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_UNIDADE_ESTRUTURA_LOTACAO", nullable = false)
	private UnidadeEstrutura unidadeEstruturaLotacao;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_CARGO_COMISSIONADO")
	private CargoComissionado cargoComissionado;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_CARGO_EFETIVO", nullable = false)
	private Cargo cargo;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_UNIDADE_ESTRUTURA_EXERCICIO", nullable = false)
	private UnidadeEstrutura unidadeEstruturaExercicio;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "DT_INICIO", nullable = false, length = 7)
	private Date dtInicio;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "DT_TERMINO", length = 7)
	private Date dtTermino;
	
	@Column(name = "NM_AUTORIDADE", length = 100)
	private String nmAutoridade;
	
	@Column(name = "NR_ESCALAO", length = 1)
	private Character nrEscalao;
	
	@Column(name = "CS_TIPO_GRATIFICACAO", length = 1)
	private Character csTipoGratificacao;
	
	@Column(name = "NR_CARGA_HORARIA", precision = 3, scale = 0)
	private Integer nrCargaHoraria;
	
	@Column(name = "ST_CARGO_EFETIVO", nullable = false, length = 1)
	private String stCargoEfetivo;
	
	@Column(name = "ST_REGISTRO", length = 1)
	private Character stRegistro;

	public FuncionarioCargo() {
	}

	public FuncionarioCargo(Long idFuncionarioCargo,
			Funcionario funcionarioByIdFuncionario,
			UnidadeEstrutura unidadeEstruturaByIdUnidadeEstruturaLotacao,
			Cargo cargo,
			UnidadeEstrutura unidadeEstruturaByIdUnidadeEstruturaExercicio,
			Date dtInicio, String stCargoEfetivo) {
		this.idFuncionarioCargo = idFuncionarioCargo;
		this.funcionarioByIdFuncionario = funcionarioByIdFuncionario;
		this.unidadeEstruturaLotacao = unidadeEstruturaByIdUnidadeEstruturaLotacao;
		this.cargo = cargo;
		this.unidadeEstruturaExercicio = unidadeEstruturaByIdUnidadeEstruturaExercicio;
		this.dtInicio = dtInicio;
		this.stCargoEfetivo = stCargoEfetivo;
	}

	public FuncionarioCargo(Long idFuncionarioCargo,
			Funcionario funcionarioByIdFuncionario,
			Funcionario funcionarioByIdFuncionarioChefeImediato,
			SituacaoFuncional situacaoFuncional,
			UnidadeEstrutura unidadeEstruturaByIdUnidadeEstruturaLotacao,
			CargoComissionado cargoComissionado, Cargo cargo,
			UnidadeEstrutura unidadeEstruturaByIdUnidadeEstruturaExercicio,
			Date dtInicio, Date dtTermino, String nmAutoridade,
			Character nrEscalao, Character csTipoGratificacao,
			Integer nrCargaHoraria, String stCargoEfetivo, Character stRegistro,
			Set<FuncionarioAfastamento> funcionarioAfastamentos) {
		this.idFuncionarioCargo = idFuncionarioCargo;
		this.funcionarioByIdFuncionario = funcionarioByIdFuncionario;
		this.funcionarioChefeImediato = funcionarioByIdFuncionarioChefeImediato;
		this.situacaoFuncional = situacaoFuncional;
		this.unidadeEstruturaLotacao = unidadeEstruturaByIdUnidadeEstruturaLotacao;
		this.cargoComissionado = cargoComissionado;
		this.cargo = cargo;
		this.unidadeEstruturaExercicio = unidadeEstruturaByIdUnidadeEstruturaExercicio;
		this.dtInicio = dtInicio;
		this.dtTermino = dtTermino;
		this.nmAutoridade = nmAutoridade;
		this.nrEscalao = nrEscalao;
		this.csTipoGratificacao = csTipoGratificacao;
		this.nrCargaHoraria = nrCargaHoraria;
		this.stCargoEfetivo = stCargoEfetivo;
		this.stRegistro = stRegistro;
	}

	
	public Long getIdFuncionarioCargo() {
		return this.idFuncionarioCargo;
	}

	
	public Funcionario getFuncionarioByIdFuncionario() {
		return this.funcionarioByIdFuncionario;
	}

	
	public Funcionario getFuncionarioChefeImediato() {
		return this.funcionarioChefeImediato;
	}

	
	public SituacaoFuncional getSituacaoFuncional() {
		return this.situacaoFuncional;
	}

	
	public UnidadeEstrutura getUnidadeEstruturaLotacao() {
		return this.unidadeEstruturaLotacao;
	}

	
	public CargoComissionado getCargoComissionado() {
		return this.cargoComissionado;
	}

	
	public Cargo getCargo() {
		return this.cargo;
	}

	
	public UnidadeEstrutura getUnidadeEstruturaExercicio() {
		return this.unidadeEstruturaExercicio;
	}

	
	public Date getDtInicio() {
		return this.dtInicio;
	}

	
	public Date getDtTermino() {
		return this.dtTermino;
	}

	
	public String getNmAutoridade() {
		return this.nmAutoridade;
	}

	
	public Character getNrEscalao() {
		return this.nrEscalao;
	}

	
	public Character getCsTipoGratificacao() {
		return this.csTipoGratificacao;
	}

	
	public Integer getNrCargaHoraria() {
		return this.nrCargaHoraria;
	}

	
	public String getStCargoEfetivo() {
		return this.stCargoEfetivo;
	}

	
	public Character getStRegistro() {
		return this.stRegistro;
	}

}
